From 845cbe4df48077d7ffbddb3789e806c99749e28d Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Thu, 29 Mar 2012 12:03:08 +0000 Subject: [PATCH] GCC 4.7 -Werror=enum-compare Gbp-Pq: Name gcc-4.7.diff --- boost/boost_1_44_0-gcc4.7.patch | 49 +++++++++++++++++++++++++++++++++ boost/makefile.mk | 3 ++ sal/qa/osl/mutex/osl_Mutex.cxx | 2 +- vigra/makefile.mk | 7 +++++ vigra/vigra1.4.0-enumwarn.patch | 13 +++++++++ 5 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 boost/boost_1_44_0-gcc4.7.patch create mode 100644 vigra/vigra1.4.0-enumwarn.patch diff --git a/boost/boost_1_44_0-gcc4.7.patch b/boost/boost_1_44_0-gcc4.7.patch new file mode 100644 index 00000000000..842a92a681d --- /dev/null +++ b/boost/boost_1_44_0-gcc4.7.patch @@ -0,0 +1,49 @@ +--- misc/boost_1_44_0/boost/smart_ptr/shared_ptr.hpp 2009-12-14 18:44:19.000000000 +0100 ++++ misc/build/boost_1_44_0/boost/smart_ptr/shared_ptr.hpp 2012-03-28 08:32:46.772493003 +0200 +@@ -207,7 +207,17 @@ + boost::detail::sp_enable_shared_from_this( this, p, p ); + } + +-// generated copy constructor, destructor are fine ++// generated copy constructor, destructor are fine... ++ ++#if defined( BOOST_HAS_RVALUE_REFS ) ++ ++// ... except in C++0x, move disables the implicit copy ++ ++ shared_ptr( shared_ptr const & r ): px( r.px ), pn( r.pn ) // never throws ++ { ++ } ++ ++#endif + + template + explicit shared_ptr(weak_ptr const & r): pn(r.pn) // may throw +--- misc/boost_1_44_0/boost/smart_ptr/weak_ptr.hpp 2009-12-14 18:44:19.000000000 +0100 ++++ misc/build/boost_1_44_0/boost/smart_ptr/weak_ptr.hpp 2012-03-28 10:31:57.607462325 +0200 +@@ -40,8 +40,24 @@ + { + } + +-// generated copy constructor, assignment, destructor are fine ++// generated copy constructor, assignment, destructor are fine... + ++#if defined( BOOST_HAS_RVALUE_REFS ) ++ ++// ... except in C++0x, move disables the implicit copy ++ ++ weak_ptr( weak_ptr const & r ): px( r.px ), pn( r.pn ) // never throws ++ { ++ } ++ ++ weak_ptr & operator=( weak_ptr const & r ) // never throws ++ { ++ px = r.px; ++ pn = r.pn; ++ return *this; ++ } ++ ++#endif + + // + // The "obvious" converting constructor implementation: diff --git a/boost/makefile.mk b/boost/makefile.mk index 3ba21d8c66c..c93a4a2a91f 100644 --- a/boost/makefile.mk +++ b/boost/makefile.mk @@ -62,6 +62,9 @@ PATCH_FILES+=boost.gcc47679.patch PATCH_FILES+=boost.windows.patch +# Backporting fixes for the GCC 4.7 -std=c++11 mode from Boost 1.48.0: +PATCH_FILES += boost_1_44_0-gcc4.7.patch + ADDITIONAL_FILES= \ libs/thread/src/win32/makefile.mk \ libs/date_time/src/gregorian/makefile.mk diff --git a/sal/qa/osl/mutex/osl_Mutex.cxx b/sal/qa/osl/mutex/osl_Mutex.cxx index 10a95c1ceca..f4f34d6e0c7 100644 --- a/sal/qa/osl/mutex/osl_Mutex.cxx +++ b/sal/qa/osl/mutex/osl_Mutex.cxx @@ -754,7 +754,7 @@ namespace osl_ClearableGuard TimeValue aTimeVal_after; osl_getSystemTime( &aTimeVal_after ); sal_Int32 nSec = aTimeVal_after.Seconds - aTimeVal_befor.Seconds; - printf("nSec is %"SAL_PRIdINT32"\n", nSec); + printf("nSec is %" SAL_PRIdINT32 "\n", nSec); myThread.join(); diff --git a/vigra/makefile.mk b/vigra/makefile.mk index db08373faf5..e1896602e5e 100644 --- a/vigra/makefile.mk +++ b/vigra/makefile.mk @@ -50,6 +50,13 @@ TARFILE_NAME=vigra1.4.0 TARFILE_MD5=ea91f2fb4212a21d708aced277e6e85a PATCH_FILES=$(TARFILE_NAME).patch +# At least GCC 4.7 treats more correctly now the type of enumerators prior to +# the closing brace of the enum-specifier (see [dcl.enum] in the C++ 2003 +# Standard), leading to "comparison between and [-Werror=enum- +# compare]" and "enumeral mismatch in conditional expression [-Werror]" +# warnings: +PATCH_FILES += vigra1.4.0-enumwarn.patch + CONFIGURE_DIR= CONFIGURE_ACTION= diff --git a/vigra/vigra1.4.0-enumwarn.patch b/vigra/vigra1.4.0-enumwarn.patch new file mode 100644 index 00000000000..8ea1ed7890d --- /dev/null +++ b/vigra/vigra1.4.0-enumwarn.patch @@ -0,0 +1,13 @@ +--- misc/vigra1.4.0/include/vigra/sized_int.hxx 2012-03-28 13:36:02.743956393 +0200 ++++ misc/build/vigra1.4.0/include/vigra/sized_int.hxx 2012-03-28 13:35:44.956057143 +0200 +@@ -80,8 +80,8 @@ + template + struct SelectBiggestIntegerType + { +- enum { cursize = LIST::size, +- nextsize = SelectBiggestIntegerType::size, ++ enum { cursize = static_cast< int >(LIST::size), ++ nextsize = static_cast< int >(SelectBiggestIntegerType::size), + size = (cursize < nextsize) ? nextsize : cursize }; + typedef typename + IfBool<(cursize < nextsize), -- 2.30.2